package net.xumf.service.master;

import net.xumf.domain.master.SystemUser;
import net.xumf.support.common.BaseService;
import net.xumf.support.model.dto.*;
import net.xumf.support.model.vo.PageVO;

public interface SystemUserService extends BaseService<SystemUser, Long> {

    /**
     * 添加用户
     *
     * @param systemUser {@link SystemUser}
     * @return {@link SystemUser}
     */
    SystemUser registerUser(SystemUser systemUser);

    /**
     * 根据登录名查找用户
     *
     * @param loginName 登录名
     * @return {@link SystemUser}
     */
    SystemUser getByLoginName(String loginName);

    /**
     * 根据用户名模糊查询
     *
     * @param dto {@link PageDTO}
     * @return {@link SystemUser}
     */
    PageVO getByUsername(PageDTO dto);


    SystemUser login(LoginDTO loginDTO);

    /**
     * 修改用户密码
     *
     * @param dto {@link PasswordChangeDTO}
     */
    void passwordChange(PasswordChangeDTO dto);

    /**
     * 用户修改自己密码
     *
     * @param dto {@link PasswordChangeDTO}
     */
    void passwordChangeMine(PasswordChangeMineDTO dto) throws Exception;

    /**
     * 通过查询字符串与状态分页获取用户
     *
     * @param pageDTO {@link PageDTO}
     * @return {@link RolePageDTO}
     */
    PageVO getByStatusAndSearchText(UserPageDTO pageDTO);
}